package com.wanqing.service;

import com.wanqing.vo.OrderReportVO;
import com.wanqing.vo.SalesTop10ReportVO;
import com.wanqing.vo.TurnoverReportVO;
import com.wanqing.vo.UserReportVO;
import jakarta.servlet.http.HttpServletResponse;

import java.time.LocalDate;

public interface ReportService {

    /**
     * 获取指定日期范围内的营业额报告
     *
     * @param begin 开始日期，表示报告周期的起始日
     * @param end   结束日期，表示报告周期的结束日
     * @return TurnoverReportVO 包含指定日期范围内营业额信息的报告对象
     */
    TurnoverReportVO getTurnover(LocalDate begin, LocalDate end);

    /**
     * 获取指定日期范围内的用户统计报告
     *
     * @param begin 开始日期，表示统计周期的起始日
     * @param end   结束日期，表示统计周期的结束日
     * @return UserReportVO 包含指定日期范围内用户相关信息的统计报告对象
     */
    UserReportVO getUserStatistics(LocalDate begin, LocalDate end);

    /**
     * 获取指定日期范围内的订单统计报告
     *
     * @param begin 开始日期，表示统计周期的起始日
     * @param end   结束日期，表示统计周期的结束日
     * @return OrderReportVO 包含指定日期范围内订单相关信息的统计报告对象
     */
    OrderReportVO getOrderStatistics(LocalDate begin, LocalDate end);

    /**
     * 获取指定日期范围内销售额排名前十的商品报告
     *
     * @param begin 开始日期，表示报告周期的起始日
     * @param end   结束日期，表示报告周期的结束日
     * @return SalesTop10ReportVO 包含指定日期范围内销售额排名前十商品信息的报告对象
     */
    SalesTop10ReportVO getSalesTop10(LocalDate begin, LocalDate end);


    /**
     * 导出近30天的运营数据报表
     *
     * @param response
     **/
    void exportBusinessData(HttpServletResponse response);
}
